package day16;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

// 服务器端
public class TcpServer_test {
    public static void main(String[] args) throws Exception{
        // 创建服务器对象
        ServerSocket server = new ServerSocket(8888);
        // 等待客户端连接
        Socket client = server.accept();//server.accept()具有堵塞功能，只有成功连接才会继续执行
        // 输出连接情况
        System.out.println("链接成功");
        // 创建io流对象
        InputStream is = client.getInputStream();// 输入流
        OutputStream os = client.getOutputStream();// 输出流
        while (true) {
            // 接受从客户端发送过来的数据
            byte[] b = new byte[1024];
            int length = is.read(b);
            if(length != -1){
                // 将数据装换成String类型
                String text = new String(b,0,length);
                // 判断结束条件
                if("quit".equals(text)){break;}
                // 通过StringBuilder的reverse方法实现字符串反转
                String text_reversed = new StringBuilder(text).reverse().toString();
                // 将处理好的字符串发送回去
                os.write(text_reversed.getBytes());
            }
        }
        // 关闭资源 处理异常 注意判空
        // 后使用的先关闭
        if(os != null){os.close();}
        if(is != null){is.close();}
        if(client != null){client.close();}
        if(server != null){server.close();}

    }
}
